﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace 打印界面上TableLayoutPanel的Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            // 打印机设置对话框
            // 在窗体的属性对话框中设置了这些属性，所以这里注释了
            //printDialog1.Document= printDocument1;
            //printDialog1.AllowCurrentPage = true;
            //printDialog1.AllowPrintToFile = true;
            //printDialog1.AllowSelection = true;
            //printDialog1.AllowSomePages = true;
            //printDialog1.ShowHelp = true;
            if (printDialog1.ShowDialog() == DialogResult.OK)
            {
                dayin();
            }
        }

        // 毫米转换为百分之一英寸
        // 如果你使用的是 Zebra、TSC、Brother 等标签打印机，还需要注意页面方向、边距等设置。如果你遇到打印内容不全、偏移等问题，我也可以帮你调整。
        public int MmToHundredthsInch(double mm)
        {
            return (int)Math.Round((mm / 25.4) * 100);
        }



        private void dayin()
        {
            // 页面大小默认设置
            // 参数1：纸张名称
            // 参数2:纸张宽度:以百分之一英寸为单位
            // 参数3:纸张高度:以百分之一英寸为单位
            this.printDocument1.DefaultPageSettings.PaperSize = new PaperSize("65*15 标签", 360, 600);

            // 假设边距均为5毫米，即约等于20百分之一英寸
            int marginLeft = 20;
            int marginTop = 20;
            int marginRight = 20;
            int marginBottom = 20;
            // 设置页面边距
            this.printDocument1.DefaultPageSettings.Margins = new Margins(marginLeft, marginRight, marginTop, marginBottom);

            // 将写好的格式给打印预览以便预览
            printPreviewDialog1.Document = printDocument1;

            // 显示打印预览对话框
            DialogResult result = printPreviewDialog1.ShowDialog();


            if (result == DialogResult.OK)
            {
                // 打印
                this.printDocument1.Print();
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            pageSetupDialog1.ShowDialog();
        }

        private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
        {
            // 清空画布
            e.Graphics.Clear(Color.White);
            // 画字符串
            e.Graphics.DrawString("某某超市小票", new Font(new FontFamily("宋体"), 12), Brushes.Black, 120, 1);
        }
    }
}
